<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>

    // 数组 => 可以存放一组相同类型的数据 => 重复放
    var list = [1, 2, 3, 3, 2, 1, 1, 3, 2, 2, 1, 3];

    // Set
    // ES6 提供了新的数据结构 Set。它类似于数组，但是成员的值都是唯一的，没有重复的值。

    // 如何创建Set数据结构?  => 构造函数Set创建
    var s = new Set();
    console.log(s);
    // console.log(s.size);


    // Set数据结构的属性和方法
    // 属性
    // size  返回Set结构成员的可数

    // 方法:
    // add()  向set结构中新增一个成员(元素)  => 返回值: 原本的Set结构
    // delete()  删除set结构中某个成员 (返回值: true/false)
    // clear()   清除set结构的所有成员
    // has()     判断Set结构中是否存在否个成员

    // forEach(function(val,key){})   遍历Set结构

    // 注意:
    // Set结构没有键名,只有键值 或者 键名键值都是同一个值

    // [{value:1}, { value: 2 }, { value: 3 }]

    // 值类型比较 => 数值类型均相同即可
    // s.add(1);
    // s.add(2);
    // s.add(3);
    // s.add(1);
    // s.add(2);
    // s.add(3);

    // 引用类型比较 => 是否引用同一片内存空间
    // s.add([4, 5, 6]);
    // s.add([4, 5, 6]);

    // var arr = [4, 5, 6];
    // s.add(arr);
    // s.add(arr);

    var arr = [4, 5, 6];
    s.add(1).add(2).add(3).add(arr);

    // 单删
    // console.log(s.delete(1));;
    // console.log(s.delete(2));;
    // console.log(s.delete(3));;
    // console.log(s.delete(arr));;
    // console.log(s.delete(4)); //false

    // 全删
    // s.clear()

    // 判断是否存在某个值
    // console.log(s.has(1));
    // console.log(s.has(2));
    // console.log(s.has(3));
    // console.log(s.has(arr));
    // console.log(s.has(4)); //false

    // console.log(s);


    // 遍历方法
    s.forEach(function (val, key) {
        console.log(key, val);
    })








</script>

</html>